import numpy as np

# 创建一个示例数组
arr = np.array([1, 2, np.nan, 4, 5, 6, np.nan, 8, 9, 9])
print('原数组:\n', arr)

# ==================== 重复值检测 ====================
# 检查数组中是否有重复值
unique_values, indices = np.unique(arr, return_index=True)
print("重复值检测:\n", unique_values)
print("================重复值检测================")

# ==================== 删除重复值 ====================
# 删除重复值，仅保留唯一值
arr_no_duplicates = np.unique(arr)
print("删除重复值:\n", arr_no_duplicates)
print("================删除重复值================")

# ==================== 异常值检测 ====================
# 使用 Z-Score 方法检测异常值（假设阈值为 3）
z_score = (arr - np.mean(arr)) / np.std(arr)
outliers = np.where(np.abs(z_score) > 3)
print("异常值检测:\n", outliers)
print("================异常值检测================")

# ==================== 异常值替换 ====================
# 将大于 100 的异常值替换为中位数
arr[arr > 100] = np.median(arr)
print("异常值替换:\n", arr)
print("================异常值替换================")

# ==================== 字符串处理 ====================
# 处理字符串数组，去除空格
str_arr = np.array([' hello ', 'world  ', '  numpy '])
str_arr_cleaned = np.char.strip(str_arr)
print("字符串处理（去除空格）:\n", str_arr_cleaned)
print("================字符串处理================")

# ==================== 数据类型转换 ====================
# 将数组转换为 float 类型
arr_float = arr.astype(float)
print("数据类型转换:\n", arr_float)
print("================数据类型转换================")

# ==================== 标准化与归一化 ====================
# 对数组进行归一化处理
arr_normalized = (arr - np.min(arr)) / (np.max(arr) - np.min(arr))
print("标准化与归一化:\n", arr_normalized)
print("================标准化与归一化================")

# ==================== 值映射与替换 ====================
# 将数组中的 1 替换为 0
arr_replaced = np.where(arr == 1, 0, arr)
print("值映射与替换:\n", arr_replaced)
print("================值映射与替换================")

# ==================== 数据去噪 ====================
# 使用卷积方法进行数据去噪
arr_denoised = np.convolve(arr, np.ones(5) / 5, mode='valid')
print("数据去噪:\n", arr_denoised)
print("================数据去噪================")